/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.si3.servicio;

import com.si3.jpa.ControlJPA;
import com.si3.modelo.Alumno;
import com.si3.modelo.EstadoProyecto;
import com.si3.modelo.ObjetoAnio;
import com.si3.modelo.PaginaInfo;
import com.si3.modelo.Profesor;
import com.si3.modelo.Propuesta;
import com.si3.modelo.Proyecto;
import com.si3.modelo.Solicitud;
import com.si3.modelo.EstadoSolicitud;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class SolicitudesService
{
	
	  public void aceptarSolicitud(int codigo,Profesor director)
	  {
		  
	     Solicitud solicitud= (Solicitud)ControlJPA.getInstancia().getEntidad(codigo, Solicitud.class);
	     solicitud.setEstadoSolicitud(EstadoSolicitud.ACEPTADA);
	     ControlJPA.getInstancia().almacenaEntidad(solicitud);
	     Proyecto proyecto=new Proyecto();
	     proyecto.setPropuestaPFC(solicitud.getPropuesta());
	     proyecto.setEstadoPfc(EstadoProyecto.DESARROLLO);
	     proyecto.setDirector(director);
	     proyecto.setanyo_inicio(Calendar.getInstance().get(Calendar.YEAR));
	     proyecto.setCalificacion("");
	     proyecto.setMemoria("");
	     proyecto.setCodigoComprimido("");
	     director.getProyectos().add(proyecto);
	     solicitud.getAlumno().setProyecto(proyecto);
	     proyecto.getAlumnos().add(solicitud.getAlumno());
	     ControlJPA.getInstancia().almacenaEntidad(proyecto); 
	     ControlJPA.getInstancia().almacenaEntidad(solicitud.getAlumno()); 

	 }
    
     public void creaSolicitud(Solicitud solicitud,String documento)
     {
    	 solicitud.setCodigo(0);
         solicitud.setDocumentoAdjunto(documento);
    	 Alumno alumno=solicitud.getAlumno();
    	 alumno.getSolicitudes().add(solicitud);
    	 ControlJPA.getInstancia().almacenaEntidad(solicitud); 
     }
     
	  public List<ObjetoAnio> getAnios()
	  {
		  
	     List<Integer> anios = ControlJPA.getInstancia().getAnios(Solicitud.class);    
		
		 List<ObjetoAnio> objetosanio = new ArrayList<ObjetoAnio>(anios.size()); 
		 for (Integer i : anios) 
		 { 
			objetosanio.add(new ObjetoAnio(String.valueOf(i))); 
		 }
		
		 return objetosanio;		  
	  }
     

    public int getCount(int anio)
    {
    	
       	ArrayList campos= new ArrayList();
		ArrayList valores= new ArrayList();
		campos.add("anyo_academico");
		valores.add(new Integer(anio)); 
    	int rowcount = ControlJPA.getInstancia().getCountEntidades(Solicitud.class,campos,valores);   
    	   	
    	return rowcount;
    }
    
    public List<Profesor>  getProfesores()
    {
 	  
  		List <Profesor> lista = ControlJPA.getInstancia().getListaEntidades(Profesor.class);
        return lista;
    }   
 

  
  public List<Solicitud>  getSolicitudes(PaginaInfo paginainfo,int anio)
  {
	  	ArrayList campos= new ArrayList();
		ArrayList valores= new ArrayList();
		campos.add("anyo_academico");
		valores.add(new Integer(anio));
	  
		List <Solicitud> lista = ControlJPA.getInstancia().getListaEntidadesPaginadas(Solicitud.class,campos,
   			                                                        valores,paginainfo);
        return lista;
  }
  

    
    public Propuesta getPropuesta(int codigoPropuesta)
    {
    	
    	Propuesta propuesta= (Propuesta)ControlJPA.getInstancia().getEntidad(codigoPropuesta, Propuesta.class);
    	return propuesta;
    }
    
    public Solicitud getSolicitud(int codigo)
    {    	
    	Solicitud solicitud= (Solicitud)ControlJPA.getInstancia().getEntidad(codigo, Solicitud.class);
    	return solicitud;
    }
    
	public void rechazarSolicitud(int codigo)
	{		  
	     Solicitud solicitud= (Solicitud)ControlJPA.getInstancia().getEntidad(codigo, Solicitud.class);
	     solicitud.setEstadoSolicitud(EstadoSolicitud.RECHAZADA);
	     ControlJPA.getInstancia().almacenaEntidad(solicitud);	
	}
    
}
